package pe.edu.unmsm.fisi.sisconteg.domain.model;

import static javax.persistence.GenerationType.IDENTITY;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

/**
 * @author Carlos y Marlon
 */
@SuppressWarnings("serial")
@Entity
@Table(name = "tb_empresa", catalog = "bdsisconteg")
public class Empresa implements java.io.Serializable {

	private Long idEmpresa;
	private String nombre;
	private String ruc;
	private String direccion;
	private List<ExperienciaLaboral> experienciasLaborales = new ArrayList<ExperienciaLaboral>(
			0);

	public Empresa() {
	}

	public Empresa(String nombre, List<ExperienciaLaboral> experienciasLaborales) {
		this.nombre = nombre;
		this.experienciasLaborales = experienciasLaborales;
	}

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "C_ID_EMPRESA", unique = true, nullable = false)
	public Long getIdEmpresa() {
		return this.idEmpresa;
	}

	public void setIdEmpresa(Long idEmpresa) {
		this.idEmpresa = idEmpresa;
	}

	@Column(name = "T_NOMBRE_EMPRESA", length = 150)
	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "empresa")
	@Fetch(value = FetchMode.SUBSELECT)
	public List<ExperienciaLaboral> getExperienciasLaborales() {
		return this.experienciasLaborales;
	}

	public void setExperienciasLaborales(
			List<ExperienciaLaboral> experienciasLaborales) {
		this.experienciasLaborales = experienciasLaborales;
	}

	@Column(name = "T_RUC", length = 20)
	public String getRuc() {
		return ruc;
	}

	public void setRuc(String ruc) {
		this.ruc = ruc;
	}

	@Column(name = "T_DIRECCION", length = 100)
	public String getDireccion() {
		return direccion;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}
}
